package pickbook.model;

import java.util.ArrayList;
import java.util.List;

//희망도서 DB 접근 관련 Database Access Object 
public interface BuyBookDAO {

	/**
	 * method : getSearchListByFactor
	 * comment : 검색어(factor)에 해당하는 책 정보를 찾는 메서드
	 * 
	 * @param factor
	 * @param pageNo
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-04
	 */
	public List<BuyBookVO> getSearchListByFactor(String factor, String pageNo);
	
	/**
	 * method : searchByFactorTotalContent
	 * comment : 검색어(factor)로 검색된 총 컨텐츠 수를 리턴하는 메서드
	 * 
	 * @param factor
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-04
	 */
	public int searchByFactorTotalContent(String factor);
	
	/**
	 * method : getSearchListByLocationUniv
	 * comment : 위치(location)과 대학교(univ)에 해당하는 책 정보를 찾는 메서드
	 * 
	 * @param location
	 * @param univ
	 * @param pageNo
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-04
	 */
	public List<BuyBookVO> getSearchListByLocationUniv(String location, String univ, String pageNo);

	/**
     * method : searchByLocationUnivTotalContent()
     * comment : 검색어(location, univ)로 검색된 총 컨텐츠 수를 리턴하는 메서드
     * 
     * @param location
     * @param univ
     * @return
     * 
     * @author 이형철
     * @date 2014-07-04
     */
	public int searchByLocationUnivTotalContent(String location, String univ);

	/**
	 * method : insertBook
	 * comment : 희망도서 추가 메서드
	 * 
	 * @param bbvo
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03
	 */
	public void insertBook(BuyBookVO bbvo);// redirect
	
	/**
	 * method : updateBook
	 * comment : 나의 희망도서 수정하는 메서드
	 * 
	 * @param bbvo
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03 
	 */
	public void updateBook(BuyBookVO bbvo);
	
	/**
	 * method : deleteBook
	 * comment : 나의 희망도서 삭제하는 메서드
	 * 
	 * @param no
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03 
	 */
	public void deleteBook(int no);
	
	/**
	 * method : findByBookNo
	 * comment : 책 번호에 해당하는 도서정보 조회 메서드
	 * 
	 * @param no
	 * @return
	 * 
	 * @author 제형규, 김병각
	 * @date 2014-07-03
	 */
	public BuyBookVO findByBookNo(int no);

	/**
	 * method : getRecentBookList
	 * comment : pageNo를 통해 최신 순으로 희망도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @return
	 * 
	 * @author 제형규, 이형철
	 * @date 2014-07-02
	 */
	public List<BuyBookVO> getRecentBookList(String pageNo);
	
	/**
	 * method : getAllBookList
	 * comment : pageNo를 통해 모든 희망도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @return
	 * 
	 * @author 제형규
	 * @date 2014-07-04
	 */
	public List<BuyBookVO> getAllBookList(String pageNo);
	
	/**
	 * method : totalContent()
	 * comment : 희망도서 총 컨텐츠 수를 리턴하는 메서드
	 * 
	 * @return
	 * 
	 * @author 제형규, 이형철
	 * @date 2014-07-02
	 */
	public int totalContent();
	
	/**
	 * method : totalBuyContent()
	 * comment : 희망도서 총 컨텐츠 수를 리턴하는 메서드
	 * 
	 * @return
	 * 
	 * @author 제형규
	 * @date 2014-07-04
	 */
	public int totalBuyContent();
	
	/**
	 * method : getMyBuyBookList
	 * comment : pageNo와 id를 통해 최신 순으로 나의 희망도서 리스트를 받아오는 메서드
	 * 
	 * @param pageNo
	 * @param id
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-03
	 */
	public List<BuyBookVO> getMyBuyBookList(String pageNo, String id);
	
	/**
	 * method : myTotalBuyContent()
	 * comment : 로그인 되어있는 id로 나의 희망도서 총 컨텐츠 수를 리턴하는 메서드
	 * 
	 * @param id
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-03
	 */
	public int myTotalBuyContent(String id);
	
	/**
	 * method : updateVisible
	 * comment : no와 bVisible으로 나의 희망도서 공개 여부를 업데이트하는 메서드
	 * 
	 * @param no
	 * @param bVisible
	 * @return
	 * 
	 * @author 이형철
	 * @date 2014-07-03
	 */
	public void updateVisible(int no, int bVisible);
	
	/**
	 * method : searchBuyBook
	 * comment : 희망 도서 검색 메서드
	 * 
	 * @param factor
	 * @param pageNo
	 * @return
	 * 
	 * @author 제형규
	 * @date 2014-07-04 
	 */
	public List searchBuyBook(String factor, String pageNo);
	
	/**
	 * method : totalSearchContent()
	 * comment : 검색된 희망 도서 수를 리턴하는 메서드
	 * 
	 * @param factor
	 * @return
	 * 
	 * @author 제형규
	 * @date 2014-07-04
	 */
	public int totalSearchContent(String factor);
}
